home *** CD-ROM | disk | FTP | other *** search
/ Carousel Volume 2 #1 / carousel.iso / mactosh / hc / homeimpr.sit / Home Improvements / card_5610.txt < prev    next >
Text File  |  1988-09-19  |  8KB  |  283 lines

  1. -- card: 5610 from stack: in
  2. -- bmap block id: 0
  3. -- flags: 0000
  4. -- background id: 3490
  5. -- name: TextEditor
  6.  
  7.  
  8. -- part 1 (button)
  9. -- low flags: 00
  10. -- high flags: 8003
  11. -- rect: left=426 top=15 right=38 bottom=508
  12. -- title width / last selected line: 0
  13. -- icon id / first selected line: 0 / 0
  14. -- text alignment: 1
  15. -- font id: 0
  16. -- text size: 12
  17. -- style flags: 0
  18. -- line height: 16
  19. -- part name: text editor
  20. ----- HyperTalk script -----
  21. on mouseUp
  22.   push card
  23.   hide menubar
  24.   go to card "Text Editor"
  25. end mouseUp
  26.  
  27.  
  28.  
  29. -- part contents for background part 1
  30. ----- text -----
  31. TextEditor
  32.  
  33. -- part contents for background part 3
  34. ----- text -----
  35. -- the handlers in the card script are as follows:
  36. --
  37. on clickField
  38.   if the paramcount<1 then
  39.     put 1 into thingg
  40.   else
  41.     put param(1) into thingg
  42.   end if
  43.   put the rect of field ID thingg into r2
  44.   put item 1 of r2 + 3 into item 1 of pt
  45.   put item 2 of r2 + 3 into item 2 of pt
  46.   click at pt
  47. end clickField
  48.  
  49. on arrowKey var -- allow scrolling of field with arrow key
  50.   if (the ShiftKey is down) or (var is "right") or (var is "left") then
  51.     pass arrowKey
  52.     exit arrowKey
  53.   end if
  54.   if the optionKey is down then
  55.     put the rect of field "thetext" into rr
  56.     put item 4 of rr into skipp
  57.     subtract item 2 of rr from skipp
  58.     subtract 9 from skipp -- keep some overlap
  59.   else
  60.     put 1 into skipp
  61.   end if
  62.   if var is "up" then put 0-skipp into skipp
  63.   put the scroll of field "thetext" into scr
  64.   add skipp to scr
  65.   if scr<0 then put 0 into scr
  66.   set the scroll of field "thetext" to scr
  67. end arrowKey
  68.  
  69. -- script for bkgnd field "stats"
  70. on mouseUp
  71.   put empty into field "stats"
  72.   put the length of field "theText" && "chars" into ┬¼
  73.   line 1 of field "stats"
  74.   put the number of lines of field "theText" && "lines" into ┬¼
  75.   line 2 of field "stats"
  76. end mouseUp
  77. --
  78. -- This is the script for bkgnd button "New Card"
  79. on mouseUp
  80.   doMenu "New Card"
  81.   put "untitled" into field "file name"
  82.   send tabKey
  83. end mouseUp
  84.  
  85. -- This is the script for bkgnd button "read"
  86. -- it uses the XFCN TBxFile by Joseph Buchanan
  87. on mouseUp
  88.   global IOResult, theText
  89.   put empty into extension
  90.   put 0 into NoErr
  91.   put 1 into fsFromStart
  92.   put 100 into item 1 of wher
  93.   put 100 into item 2 of wher
  94.   put empty into rply
  95.   put TBxFile("SFGetFile",wher,"What file:",0,1,"TEXT",0,0) into rply
  96.   if IOResult <> noErr THEN
  97.     put "IO error on SFGetFile " & IOResult
  98.     exit mouseUp
  99.   end if
  100.   if item 1 of rply is false then exit mouseup
  101.   get item 4 of rply
  102.   put the value of it into theVRefNo
  103.   put item 6 of rply into pfname
  104.   put TBxFile("FSOpen",pfname, theVRefNo, 0) into refNo
  105.   if IOResult <> noErr THEN
  106.     put "IO error on FSOpen " & IOResult
  107.     exit mouseUp
  108.   end if
  109.   put empty into logEOF
  110.   put TBxFile("GetEOF",refNo, 0) into logEOF
  111.   if IOResult <> noErr THEN
  112.     put "IO error on GetEOF " & IOResult
  113.     exit mouseUp
  114.   end if
  115.   put the value of logEOF into Siz
  116.   If Siz>29990 Then
  117.     put Siz & " Characters in the file"
  118.     ask "File too large, start reading from:" with 0
  119.     if it is empty then exit mouseUp
  120.     put the value of it into startPt
  121.     if startPt>Siz then put Siz-29990 into startPt
  122.     put "reading from " & startPt
  123.     put TBxFile("SetFPos",refNo, fsFromStart, startPt) into io
  124.     if IOResult <> noErr THEN
  125.       put "IO error on SetFPos0 " & IOResult
  126.       put TBxFile("FSClose",refNo) into io
  127.       put TBxFile("FlushVol",NIL, theVRefNo) into io
  128.       answer "An IO error has occured."
  129.       exit mouseUp
  130.     end if
  131.     put " (partial)" into extension
  132.     put siz-startPt into siz
  133.     if siz>29990 then put 29990 into siz
  134.     hide the message window
  135.   end if
  136.   put empty into theText
  137.   put TBxFile("FSRead",refNo, siz, 0) into theText
  138.   if IOResult <> noErr then
  139.     put "IO error on Read " & IOResult
  140.     exit mouseUp
  141.   end if
  142.   put pfname & extension into field "file name"
  143.   put TBxFile("FSClose",refNo) into io
  144.   IF IOResult <> noErr THEN
  145.     put "IO error on Close " & IOResult
  146.     exit mouseUp
  147.   end if
  148.   put TBxFile("FlushVol",NIL, theVRefNo) into io
  149.   IF IOResult <> noErr THEN
  150.     put "IO error on Flush " & IOResult
  151.     exit mouseUp
  152.   end if
  153.   put theText into field "theText"
  154.   send mouseUp to field "stats"
  155.   clickField
  156. end mouseUp
  157.  
  158. -- This is the script for bkgnd button "write"
  159. -- it uses the XFCN TBxFile by Joseph Buchanan
  160. on mouseUp
  161.   global IOResult, theText
  162.   put field "file name" into pfname
  163.   put 0 into NoErr
  164.   put -43 into fnfErr
  165.   put 1 into fsFromStart
  166.   put 100 into item 1 of wher
  167.   put 100 into item 2 of wher
  168.   put empty into rply
  169.   put TBxFile("SFPutFile",wher,"Save Field as:",pfname,0,0) into rply
  170.   if IOResult <> noErr THEN
  171.     put "IO error on SFPutFile " & IOResult
  172.     exit mouseUp
  173.   end if
  174.   if item 1 of rply is false then exit mouseup
  175.   get item 4 of rply
  176.   put the value of it into theVRefNo
  177.   put item 6 of rply into pfname
  178.   put TBxFile("FSOpen",pfname, theVRefNo, 0) into refNo
  179.   if (IOResult <> noErr) AND (IOResult <> fnfErr) THEN
  180.     put "IO error on FSOpen " & IOResult
  181.     exit mouseUp
  182.   end if
  183.   if IOResult=fnfErr then
  184.     put TBxFile("Create",pfname, theVRefNo, "????","TEXT") into io
  185.     if IOResult <> noErr THEN
  186.       put "IO error on Create " & IOResult
  187.       exit mouseUp
  188.     end if
  189.     put TBxFile("FSOpen",pfname, theVRefNo, 0) into refNo
  190.     if IOResult <> noErr THEN
  191.       put "IO error on FSOpen " & IOResult
  192.       exit mouseUp
  193.     end if
  194.   else
  195.     put TBxFile("GetEOF",refNo, 0) into logEOF
  196.     if IOResult <> noErr THEN
  197.       put "IO error on GetEOF " & IOResult
  198.       exit mouseUp
  199.     end if
  200.     put TBxFile("SetFPos",refNo, fsFromStart, logEOF) into io
  201.     if IOResult <> noErr THEN
  202.       put "IO error on SetFPos " & IOResult
  203.       exit mouseUp
  204.     end if
  205.   end if
  206.   put field "theText" into theText
  207.   put the length of theText into Siz
  208.   put TBxFile("FSWrite",refNo, siz, theText) into io
  209.   if IOResult <> noErr then
  210.     put "IO error on Write " & IOResult
  211.     exit mouseUp
  212.   end if
  213.   put TBxFile("FSClose",refNo) into io
  214.   IF IOResult <> noErr THEN
  215.     put "IO error on Close " & IOResult
  216.     exit mouseUp
  217.   end if
  218.   put TBxFile("FlushVol",NIL, theVRefNo) into io
  219.   IF IOResult <> noErr THEN
  220.     put "IO error on Flush " & IOResult
  221.     exit mouseUp
  222.   end if
  223.   put pfname into field "File Name"
  224. end mouseUp
  225.  
  226. -- This is the script for bkgnd button "copy to clipboard"
  227. on mouseUp
  228.   send tabKey
  229.   doMenu "Copy Text"
  230.   put "The text has been copied to the clipboard."
  231.   wait 50 ticks
  232.   hide the message window
  233.   clickField
  234. end mouseUp
  235.  
  236. -- This is the script for bkgnd button "print"
  237. -- it uses the XCMD PrintFile by Kevin Calhoun
  238. on mouseUp
  239.   printfield "field theText",2
  240. end mouseUp
  241.  
  242. -- This is the script for bkgnd button "sort"
  243. -- it uses the XFCN Sorter by Joseph Buchanan
  244. on mouseUp
  245.   answer "Ascending or Descending?" with ┬¼
  246.   "Cancel" OR "Descending" OR "Ascending"
  247.   if it is "Cancel" then exit mouseUp
  248.   put "A" into hang
  249.   if it is "Descending" then put "D" into hang
  250.   put field "theText" into thingg
  251.   put empty into field "theText"
  252.   put sorter(thingg,hang) into field "theText"
  253.   send mouseUp to field "stats"
  254. end mouseUp
  255.  
  256. -- this is the script for bkgnd button "clear"
  257. on mouseUp
  258.   if the optionKey is down then
  259.     get the short name of this card
  260.     if it is "text edit" then
  261.       answer "You cannot delete the first text edit card"
  262.       exit mouseUp
  263.     end if
  264.     answer "Delete this card?" with "Cancel" or "OK"
  265.     if it is "Cancel" then exit mouseUp
  266.     doMenu "Delete Card"
  267.     go to prev card
  268.   end if
  269.   put empty into field "theText"
  270.   put empty into field "stats"
  271.   put "Untitled" into field "file name"
  272.   doMenu "Compact Stack"
  273.   send mouseUp to field "stats"
  274.   clickField
  275. end mouseUp
  276.  
  277. -- part contents for background part 5
  278. ----- text -----
  279. 6/29/88 15:40
  280.  
  281. -- part contents for background part 4
  282. ----- text -----
  283. This is a Background/Card that implements a simple text editor using a HyperCard field and a few tools.  It will read in a file (32K or less) an store it into the field and it will allow saving back to the field.  It will also print the contents of the field and allow sorting of the field.